package com.zl.easybuy.service.impl;

import com.zl.easybuy.bo.ProductBo;
import com.zl.easybuy.mapper.ProductCategoryMapper;
import com.zl.easybuy.mapper.ProductMapper;
import com.zl.easybuy.pojo.Product;
import com.zl.easybuy.pojo.ProductCategory;
import com.zl.easybuy.service.ProductCategoryService;
import com.zl.easybuy.vo.ProductCategoryVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
@Service
public class ProductCategoryServiceImpl implements ProductCategoryService {
    @Autowired
    ProductCategoryMapper productCategoryMapper;
    @Autowired
    ProductMapper productMapper;
    @Override
    public List<ProductCategoryVo> findAllCategory() {
        //第一级列表，返回的数据
        List<ProductCategoryVo> firstProductCategoryVoList=new ArrayList<ProductCategoryVo>();
        //获取第一级分类列表
        List<ProductCategory> firstProductCategoryList=productCategoryMapper.findProductByType(1);
        //查询体
        ProductBo productBo=new ProductBo();
        //分页
        productBo.setPage(true);
        //六条记录
        productBo.setPageSize(6);
        //第一页
        productBo.setPageNo(1);
        Product product=new Product();
        productBo.setProduct(product);
        //遍历第一级分类
        for(ProductCategory firstProductCategory:firstProductCategoryList){
            //第一级数据
            ProductCategoryVo firstProductCategoryVo=new ProductCategoryVo();
            //填入第一级分类
            firstProductCategoryVo.setProductCategory(firstProductCategory);
            //获取第二级分类列表
            List<ProductCategory> secondProductCategoryList=productCategoryMapper.findProductByParentId(firstProductCategory.getId());
            //定义第二级列表
            List<ProductCategoryVo> secondProductCategoryVoList=new ArrayList<ProductCategoryVo>();
            //将二级分类列表填入一级分类Vo
            firstProductCategoryVo.setProductCategoryVoList(secondProductCategoryVoList);
            //遍历第二级分类
            for(ProductCategory secondProductCategory:secondProductCategoryList){
                //第二级级数据
                ProductCategoryVo secondProductCategoryVo=new ProductCategoryVo();
                //填入第二级分类
                secondProductCategoryVo.setProductCategory(secondProductCategory);
                //获取第三级分类列表
                List<ProductCategory> thirdProductCategoryList=productCategoryMapper.findProductByParentId(secondProductCategory.getId());
                //定义第三级列表
                List<ProductCategoryVo> thirdProductCategoryVoList=new ArrayList<ProductCategoryVo>();
                //将三级分类列表填入二级分类Vo
                secondProductCategoryVo.setProductCategoryVoList(thirdProductCategoryVoList);
                for(ProductCategory thirdProductCategory:thirdProductCategoryList){
                    //第三级数据
                    ProductCategoryVo thirdProductCategoryVo=new ProductCategoryVo();
                    //填入第三级分类
                    thirdProductCategoryVo.setProductCategory(secondProductCategory);
                    //将三级数据填入三级列表中
                    thirdProductCategoryVoList.add(thirdProductCategoryVo);
                }
                //将二级数据填入三级列表中
                secondProductCategoryVoList.add(secondProductCategoryVo);
            }
            //设置查询体一级分类的值
            product.setCategoryLevel1Id(firstProductCategory.getId());
            //根据productBo查询商品
            List<Product> productList=productMapper.findProducts(productBo);
            //填入一级数据
            firstProductCategoryVo.setProductList(productList);
            //将一级数据填入三级列表中
            firstProductCategoryVoList.add(firstProductCategoryVo);
        }
        return firstProductCategoryVoList;
    }
}
